from wtforms import Form, BooleanField, StringField, PasswordField, validators
from wtforms.validators import DataRequired


class TestForm(Form):
    title = StringField('title', [validators.Length(min=1, max=10,message='title字符串长度 be between 4 and 25 characters'),])
    content = StringField('content', [validators.Length(min=4, max=20,message='content字符串长度 must be between 4 and 25 characters')])
    # email = StringField('Email Address', [validators.Length(min=6, max=35)])
    # password = PasswordField('New Password', [
    #     validators.DataRequired(),
    #     validators.EqualTo('confirm', message='Passwords must match')
    # ])
    # confirm = PasswordField('Repeat Password')
    # accept_tos = BooleanField('I accept the TOS', [validators.DataRequired()])

    #DataRequired：确保字段的值非空。
    #field = StringField('Field Name', validators=[DataRequired()])

    # Length：限制字段值的长度。
    #field = StringField('Field Name', validators=[Length(min=3, max=10)])

    #Email：验证电子邮件地址的格式。
    # field = StringField('Field Name', validators=[Email()])

    # EqualTo：验证两个字段的值是否相等，通常用于密码确认字段。
    # # 示例用法
    # password = PasswordField('Password', validators=[DataRequired()])
    # confirm_password = PasswordField('Confirm Password', validators=[EqualTo('password')])

    # URL：验证URL地址的格式。
    # field = StringField('Field Name', validators=[URL()])

    # NumberRange：验证数值字段的取值范围。
    # field = IntegerField('Field Name', validators=[NumberRange(min=0, max=100)])

    # Regexp：使用正则表达式验证字段值的格式。
    # field = StringField('Field Name', validators=[Regexp(r'^[A-Za-z]+$')])

    # AnyOf：验证字段值是否属于指定的可选值列表。
    # field = StringField('Field Name', validators=[AnyOf(['option1', 'option2', 'option3'])])

'''
1、StringField：用于文本输入字段，对应HTML的<input type="text">。
2、PasswordField：用于密码输入字段，对应HTML的<input type="password">。
3、TextAreaField：用于多行文本输入字段，对应HTML的<textarea></textarea>。
4、IntegerField：用于整数输入字段，对应HTML的<input type="number">。
5、DecimalField：用于十进制数输入字段，对应HTML的<input type="number">。
6、BooleanField：用于复选框字段，对应HTML的<input type="checkbox">。
7、RadioField：用于单选按钮字段，对应HTML的<input type="radio">。
8、SelectField：用于下拉列表字段，对应HTML的<select><option></option></select>。
9、然后FileField：用于文件上传字段，对应HTML的<input type="file">。
10、DateField：用于日期输入字段，可以选择日历日期。
11、DateTimeField：用于日期和时间输入字段。
12、HiddenField：用于隐藏字段，对应HTML的<input type="hidden">。 
'''